package com.filipinas.tresenraya;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class TresEnRayaActivity extends Activity {
	private TextView aviso;
	private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,nuevoJuego;
	RadioButton rb1,rb2;
	ControladorJuego control;
	private Button[][] arrayBotones;
	MyListener listener;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_tres_en_raya);

		arrayBotones = new Button[3][3];
		
		listener = new MyListener(this, this.control);
		
		aviso = (TextView)findViewById(R.id.aviso);
		aviso.setText("Seleciona un modo");
		b1 = (Button)findViewById(R.id.uno);
		b1.setOnClickListener(listener);
		arrayBotones[0][0] = b1;
		b2 = (Button)findViewById(R.id.dos);
		b2.setOnClickListener(listener);
		arrayBotones[0][1] = b2;
		b3 = (Button)findViewById(R.id.tres);
		b3.setOnClickListener(listener);
		arrayBotones[0][2] = b3;
		b4 = (Button)findViewById(R.id.cuatro);
		b4.setOnClickListener(listener);
		arrayBotones[1][0] = b4;
		b5 = (Button)findViewById(R.id.cinco);
		b5.setOnClickListener(listener);
		arrayBotones[1][1] = b5;
		b6 = (Button)findViewById(R.id.seis);
		b6.setOnClickListener(listener);
		arrayBotones[1][2] = b6;
		b7 = (Button)findViewById(R.id.siete);
		b7.setOnClickListener(listener);
		arrayBotones[2][0] = b7;
		b8 = (Button)findViewById(R.id.ocho);
		b8.setOnClickListener(listener);
		arrayBotones[2][1] = b8;
		b9 = (Button)findViewById(R.id.nueve);
		b9.setOnClickListener(listener);
		arrayBotones[2][2] = b9;
		RadioGroup rg = (RadioGroup) findViewById(R.id.radioGroup);
		rg.setOnClickListener(listener);
		rb1 = (RadioButton)findViewById(R.id.jug1);
		rb1.setOnClickListener(listener);
		rb2 = (RadioButton)findViewById(R.id.jug2);
		rb2.setOnClickListener(listener);
		nuevoJuego = (Button)findViewById(R.id.nuevoJuego);
		nuevoJuego.setOnClickListener(listener);
		nuevoJuego.setEnabled(false);
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.tres_en_raya, menu);
		return true;
	}

	public void marcaOrdenador(int x, int y){
		arrayBotones[x][y].setText("x");
		arrayBotones[x][y].setEnabled(false);
	}
	
	public void pinta(int jugada, Button boton){

		if(control.isTurno() == true){
			boton.setText("x");
			boton.setEnabled(false);
			aviso.setText("Turno jugador 1");
		}	
		else{
			boton.setText("o");
			boton.setEnabled(false);
			if(control.getModo() == ControladorJuego.TIPO_JUEGO.JUGADOR1){
				
				if(control.comprobarFin() == -1){
					int casilla[] = control.jugadaOrdenador();
					Log.i("TT","XX: marca Casilla" + casilla);
					marcaOrdenador(casilla[0], casilla[1]);
					jugada = casilla[2];
				}			
			}
			if(control.getModo() == ControladorJuego.TIPO_JUEGO.JUGADOR2){
				aviso.setText("Turno jugador 2");
			}
		}
		if(jugada != -1){
			finalPartida(jugada);
		}
	}
	 
	public void finalPartida(int jugada){
		if(jugada == 0){
			aviso.setText("Jugador 1 has ganado!!!");
			todoMuereAlFinal();
		}
		if(jugada == 1){
			aviso.setText("Jugador 2 has ganado!!!");
			todoMuereAlFinal();
		}
		if(jugada == 9){
			aviso.setText("Empate!");
			todoMuereAlFinal();
		}
	}
//	Recibe un entero y devuelve una instacia de ControladorJuego al que se le 
//	pasa el modo de partida
	public ControladorJuego asignarJugador(int jugadores){
		if(jugadores == 1){
			this.control = new ControladorJuego(ControladorJuego.TIPO_JUEGO.JUGADOR1);
		}else if(jugadores == 2){
			this.control = new ControladorJuego(ControladorJuego.TIPO_JUEGO.JUGADOR2);
		}
		return this.control;
	}
//	Inhabilita los botones al final de la partida y hablilita
//	el boton de nueva partida	
	public void todoMuereAlFinal(){
		listener.setJugada(2);
		nuevoJuego.setEnabled(true);
		rb1.setEnabled(false);
		rb2.setEnabled(false);
	}
//	Habilita los botones para una nueva partida y reinicializa
//	las variables de MyListener	y ControladorJuego
	public void unNuevoRenacer(){
		b1.setText("");
		b2.setText("");
		b3.setText("");
		b4.setText("");
		b5.setText("");
		b6.setText("");
		b7.setText("");
		b8.setText("");
		b9.setText("");
		try{
		b1.setEnabled(true);
		b2.setEnabled(true);
		b3.setEnabled(true);
		b4.setEnabled(true);
		b5.setEnabled(true);
		b6.setEnabled(true);
		b7.setEnabled(true);
		b8.setEnabled(true);
		b9.setEnabled(true);
		rb1.setEnabled(true);
		rb1.clearFocus();
		rb2.setEnabled(true);
		rb2.clearFocus();
		}catch (Exception e){
			Log.i("TTT", "Petan los enablesTrue");
		}
		listener.setJugada(1);
		this.control.unNuevoJuego();
		aviso.setText("Selecciona un modo");
		nuevoJuego.setEnabled(false);
//		this.control = null;
	}
	 
	public void apoyoAUnNuevoRenacer(){
		aviso.setText("Turno jugador 1");
	}
	
}
